Make CLI optional (for library usage) #289
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is made by adding a "bin" feature that's enabled by default, inspired by what was done in rust-embedded/svd2rust#619.
Additionally, support for JSON and YAML configs has also been made optional but default. This includes what should be the only behavior change: if neither were enabled at build-time, passing a config file is an error.
The motivation came from Rahix/avr-device#201, but this should be a generally beneficial change for everybody.
Since some of the features of the CLI aren't very useful when using svdtools as a library, they just vanish without the "bin" feature. This is for two reasons: one is to reduce diff size, and two is to avoid having to refactor all capabilities to have a library equivalent. There is little disadvantage to this, for instance in avr-device we only use the patching functionality (which is kept), and there's little prospect of needing more.